package pub.wkq.file.controller;

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import pub.wkq.common.exception.CustomException;
import pub.wkq.common.result.JSONResult;
import pub.wkq.common.result.ResponseStatusEnum;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@RestController
@RequestMapping("file")
public class FileController {
    //定义 host
    private static final String HOST = "http://localhost:8000/file-service/file-service";

    @PostMapping("uploadFace")
    public JSONResult uploadFace(@RequestParam MultipartFile file, String userId, HttpServletRequest request) {
        //获取文件的原始名称
        String fileName = file.getOriginalFilename();
        //获取文件的后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        //文件新的名称
        String newFileName = userId + suffixName;
        //设置文件存储的路径，可以存放在指定的路径中，windows linux 位置不一样
        String rootPath = "C:\\Users\\21129\\Downloads\\temp\\";
        //图片存储的完全路径
        String filePath = rootPath + File.separator + "face" + File.separator + newFileName;
        //创建文件的实例
        File newFile = new File(filePath);
        if (!newFile.getParentFile().exists()) {
            //如果父目录不存在，则创建父目录
            newFile.getParentFile().mkdirs();
        }
        //将文件写入到指定的位置
        try {
            file.transferTo(newFile);
        } catch (IOException e) {
            throw new CustomException(ResponseStatusEnum.FILE_UPLOAD_FAILD);
        }
        //生成 web 可以被访问 的 url 地址
        String userFaceUrl = HOST +  "/static/face/" + newFileName;
        return JSONResult.ok(userFaceUrl);
    }
}
